#include <iostream>
#include <string>
#include <memory>
#include <jsoncpp/json/json.h>
//g++ jsonParse.cc -o jsonParse -l jsoncpp
// 将字符串反序列化为json对象
int main()
{
    // R: 表示之后皆为原始字符串
    //(const char [54]) "{\"姓名\":\"小黑\",\"年龄\":19,\"成绩\":[58.5,56,59]}"
    std::string str = R"({"姓名":"小黑","年龄":19,"成绩":[58.5,56,59]})";

    Json::Value root;
    Json::CharReaderBuilder crb;
    std::unique_ptr<Json::CharReader> crPtr(crb.newCharReader());
    
    //从strbuf读到json
    //bool parse(const char *beginDoc, const char *endDoc, Value *root, string *errs)
    std::string err;
    //从一个字符序列中解析存储在Value对象中 将错误信息存储在string类型的对象中
    bool parseOk = crPtr->parse(str.c_str(), str.c_str() + str.size(), &root, &err);
    if (parseOk == false)
    {
        std::cout << "parse error: " << err << std::endl;
        return -1;
    }

    std::cout << root["姓名"].asString() << std::endl;
    std::cout << root["年龄"].asInt() << std::endl;

    for (int i = 0; i < root["成绩"].size(); i++)
        std::cout << root["成绩"][i] << std::endl;
    return 0;
}
